package com.wzl.base;

import com.wzl.base.domain.Student;

/**参数传递 & 类型转换
 *
 * @author weiZhiLin
 * @version 1.0
 * @date 2020/1/17 13:48
 */
public class StudyDemo02 {
    // 参数传递
    public static void transferValue() {
        // s 是一个指针，指向堆中对象的地址
        // Java 没有指针，它的引用可以理解为安全指针，而 C++ 具有和 C 一样的指针
        Student s = new Student();
        System.out.println(s.getName());
        System.out.println(s.getAddress());
//        System.out.println(Integer.toHexString(s.hashCode()));
        transferTest(s);
        System.out.println(s.getAddress());
        System.out.println(s.getName());
    }

    private static void transferTest(Student s) {
        s.setName("张学友");
        s = new Student(); // 此时指针指向了其他对象，对以前的对象没有影响了
        System.out.println(s.getAddress());
    }

    // 类型转换
    private static void transferType() {
//        float f = 1.1; // 编译报错 1.1 属于 double 类型（64位），float（32位）
        float f = 1.1f;

        short s = 1;
//        s = s + 1; //编译报错 1 属于 int 类型（32位），short（16位）
        s++; //隐式类型转换
        s+=1; //隐式类型转换
        //相当于
        s = (short) (s + 1);
    }


    // switch
    /*
    switch 不支持 long，是因为 switch 的设计初衷是对那些只有少数几个值的类型进行等值判断，如果值过于复杂，那么还是用 if 比较合适。
     */

    public static void main(String[] args) {
        // 参数传递
        transferValue();
    }
}
